/**
 * @file    camera_base.hpp
 * @brief   摄像头基类
 * @author  Haozhong Xu
 * @date    2025-05-27
 * @version 1.0
 * 
 * @note    其他功能类摄像头都要继承，并定义一些基本函数，返回设置的宽和高
 */
#ifndef CAMERA_BASE_HPP
#define CAMERA_BASE_HPP

#include <string>

/**
 * @class CameraBase
 * @brief CameraBase 类，功能类摄像头基类，纯虚类
 *
 * 基类摄像头，定义子类必须实现的一些纯虚函数，以及
 * GetWidth等返回设置宽高的基本方法
 */
class CameraBase {
public:
    CameraBase(const std::string &device_path, int width, int height)
        : _devicepath(device_path), _width(width), _height(height) {}

    virtual ~CameraBase() = default;
    virtual void Init() = 0;
    virtual void Close() = 0;

public:
    int GetWidth() const {
        return _width;
    }

    int GetHeight() const {
        return _height;
    }


protected:
    std::string _devicepath;
    int _width;
    int _height;
    int _fd;
};



#endif /* CAMERA_BASE_HPP */
